/*
 * Samsung's Exynos4210 based Origen board device tree source
 *
 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 * Copyright (c) 2010-2011 Linaro Ltd.
 *		www.linaro.org
 *
 * Device tree source file for Insignal's Origen board which is based on
 * Samsung's Exynos4210 SoC.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
*/

/dts-v1/;
#include "exynos4210.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "exynos-mfc-reserved-memory.dtsi"

/ {
	model = "Insignal Origen evaluation board based on Exynos4210";
	compatible = "insignal,origen", "samsung,exynos4210", "samsung,exynos4";

	memory@40000000 {
		device_type = "memory";
		reg = <0x40000000 0x10000000
		       0x50000000 0x10000000
		       0x60000000 0x10000000
		       0x70000000 0x10000000>;
	};

	chosen {
		bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc";
		stdout-path = &serial_2;
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		mmc_reg: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			regulator-name = "VMEM_VDD_2.8V";
			regulator-min-microvolt = <2800000>;
			regulator-max-microvolt = <2800000>;
			gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>;
			enable-active-high;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		up {
			label = "Up";
			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_UP>;
			wakeup-source;
		};

		down {
			label = "Down";
			gpios = <&gpx2 1 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_DOWN>;
			wakeup-source;
		};

		back {
			label = "Back";
			gpios = <&gpx1 7 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_BACK>;
			wakeup-source;
		};

		home {
			label = "Home";
			gpios = <&gpx1 6 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_HOME>;
			wakeup-source;
		};

		menu {
			label = "Menu";
			gpios = <&gpx1 5 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_MENU>;
			wakeup-source;
		};
	};

	leds {
		compatible = "gpio-leds";
		status {
			gpios = <&gpx1 3 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
		};
	};

	fixed-rate-clocks {
		xxti {
			compatible = "samsung,clock-xxti";
			clock-frequency = <0>;
		};

		xusbxti {
			compatible = "samsung,clock-xusbxti";
			clock-frequency = <24000000>;
		};
	};

	display-timings {
		native-mode = <&timing0>;
		timing0: timing {
			clock-frequency = <47500000>;
			hactive = <1024>;
			vactive = <600>;
			hfront-porch = <64>;
			hback-porch = <16>;
			hsync-len = <48>;
			vback-porch = <64>;
			vfront-porch = <16>;
			vsync-len = <3>;
		};
	};
};

&cpu0 {
	cpu0-supply = <&buck1_reg>;
};

&fimd {
	pinctrl-0 = <&lcd_en &lcd_clk &lcd_data24 &pwm0_out>;
	pinctrl-names = "default";
	status = "okay";
};

&i2c_0 {
	status = "okay";
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <20000>;
	pinctrl-0 = <&i2c0_bus>;
	pinctrl-names = "default";

	max8997_pmic@66 {
		compatible = "maxim,max8997-pmic";
		reg = <0x66>;
		interrupt-parent = <&gpx0>;
		interrupts = <4 0>, <3 0>;

		max8997,pmic-buck1-dvs-voltage = <1350000>;
		max8997,pmic-buck2-dvs-voltage = <1100000>;
		max8997,pmic-buck5-dvs-voltage = <1200000>;

		regulators {
			ldo1_reg: LDO1 {
				regulator-name = "VDD_ABB_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo2_reg: LDO2 {
				regulator-name = "VDD_ALIVE_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};

			ldo3_reg: LDO3 {
				regulator-name = "VMIPI_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
			};

			ldo4_reg: LDO4 {
				regulator-name = "VDD_RTC_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt	= <1800000>;
				regulator-always-on;
			};

			ldo6_reg: LDO6 {
				regulator-name = "VMIPI_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt	= <1800000>;
				regulator-always-on;
			};

			ldo7_reg: LDO7 {
				regulator-name = "VDD_AUD_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt	= <1800000>;
			};

			ldo8_reg: LDO8 {
				regulator-name = "VADC_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt	= <3300000>;
			};

			ldo9_reg: LDO9 {
				regulator-name = "DVDD_SWB_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt	= <2800000>;
				regulator-always-on;
			};

			ldo10_reg: LDO10 {
				regulator-name = "VDD_PLL_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt	= <1100000>;
				regulator-always-on;
			};

			ldo11_reg: LDO11 {
				regulator-name = "VDD_AUD_3V";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt	= <3000000>;
			};

			ldo14_reg: LDO14 {
				regulator-name = "AVDD18_SWB_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt	= <1800000>;
				regulator-always-on;
			};

			ldo17_reg: LDO17 {
				regulator-name = "VDD_SWB_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt	= <3300000>;
				regulator-always-on;
			};

			ldo21_reg: LDO21 {
				regulator-name = "VDD_MIF_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt	= <1200000>;
				regulator-always-on;
			};

			buck1_reg: BUCK1 {
				/*
				* HACK: The real name is VDD_ARM_1.2V,
				* but exynos-cpufreq does not support
				* DT-based regulator lookup yet.
				*/
				regulator-name = "vdd_arm";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt	= <1350000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck2_reg: BUCK2 {
				regulator-name = "VDD_INT_1.1V";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt	= <1100000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck3_reg: BUCK3 {
				regulator-name = "VDD_G3D_1.1V";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1100000>;
			};

			buck5_reg: BUCK5 {
				regulator-name = "VDDQ_M1M2_1.2V";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			buck7_reg: BUCK7 {
				regulator-name = "VDD_LCD_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};
		};
	};
};

&sdhci_0 {
	bus-width = <4>;
	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_cd>;
	pinctrl-names = "default";
	vmmc-supply = <&mmc_reg>;
	status = "okay";
};

&sdhci_2 {
	bus-width = <4>;
	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>;
	pinctrl-names = "default";
	vmmc-supply = <&mmc_reg>;
	status = "okay";
};

&serial_0 {
	status = "okay";
};

&serial_1 {
	status = "okay";
};

&serial_2 {
	status = "okay";
};

&serial_3 {
	status = "okay";
};

&rtc {
	status = "okay";
};

&tmu {
	status = "okay";
};

&watchdog {
	status = "okay";
};
